This application is related to the following U.S. patent application: U.S. patent application Ser. No. 09/261,864 entitled xe2x80x9cSystem and Method for Patching an Installed Application Program,xe2x80x9d which was filed concurrently and is assigned to the same assignee as this application.
This invention relates generally to the installation of software applications on a computer system, and more specifically, to maintaining installation configuration information for future modifications to the installed software application.
Software application installation is an area of increasing importance. Unfortunately, existing installation technologies fail to address all of a computer user""s needs. Most installation technologies are simply brute-force mechanisms for copying program files from one location to another. Only one known installer program, Microsoft Windows Installer, developed by Microsoft Corporation, Redmond, Wash., even comes close. For a description of Microsoft Windows Installer, see Kelly, Mike, xe2x80x9cGain Control of Application Setup and Maintenance with the New Windows Installerxe2x80x9d, Microsoft Systems Journal, pp. 15-27, September 1998.
The one installer program that comes close to addressing all of the computer user""s needs manages the installation of an application so that information related to each. of the application""s resources is stored in a xe2x80x9cconfiguration database.xe2x80x9d The configuration database may be registry keys within a system registry, or it may be a stand-alone database. The stored information includes, but is not limited to, the installed state of the application, i.e., what features of the application are or are not installed, whether the application should be run locally or run from a source, paths to the program files of the application, whether features are xe2x80x9cadvertisedxe2x80x9d (i.e., available but not installed), etc. The stored information is stored at install time and is used by the installer program to ensure that an application always has available the resources that it expects or that the user requests. For instance, one function of the installer program is to verify the existence of a resource needed by the application. When the application requests a path to a program file, the installer program verifies the existence of that program file at the expected location stored in the configuration database. If, for some unexpected reason, the program file does not exist at the expected location, the installer program installs the program file prior to returning its path to the application. The installer program continually updates the configuration database if any changes are made to the installed state of the application.
Generally speaking, xe2x80x9cpatchingxe2x80x9d refers to the art of modifying or updating an application from one state to another state. Often, patching is performed if an application is in need of a service release or update to remedy a programming bug or other infirmity. Patching is traditionally performed by executing a patching application, which makes minor modifications to the installed application""s files or resources.
When a product is installed, an execution format is designated. The execution format can apply to the product, or to features of the product. The execution format can be run from source (e.g., run from the original location, such as a CD-ROM, or run from a network server disk), or it can be run locally. The installer program can determine whether the product is to be run from source or run locally. Alternatively, the user may have the option of whether to run locally or run from source. If the product is to be run locally (either as designated by the product installation program, or as selected by the user), the user may also be able to specify where to load the program (i.e., path).
In the past, if a user wanted to apply a patch to an application program that was installed to run from source, the user was required to install the application program to run locally before applying the patch. This not only requires more work on the part of the user, but it also requires the user to make the decision if the patch is critical, and then take the action to install the product so that it can run locally.
Accordingly, there exists a need in the art for an improved method of patching a software program that can determine whether the execution format of the software program is run from source or run locally, and maintain the existing execution format, if possible.
The present invention is directed to a method, and computer-readable medium for preserving an execution format after patching a software program using an installer program. The installer program determines the execution format of each of the features of the software program. The execution format for each feature is either Run-Locally or Run-From-Source. If the execution format for a feature is Run-Locally, the feature has been installed locally. If the execution format for a feature is Run-From-Source, the feature has not been installed locally, but is available for execution. If the execution format for a feature is Run-From-Source, the installer program determines if the patch is critical for that feature. If the patch is critical for the feature, the installer program changes the execution format for the feature to Run-Locally because the user usually cannot write to the source (e.g., a read-only CD), or does not have permission to write to the network location.
In accordance with still other aspects of the present invention, those features that are changed to Run-Locally are installed locally. Information relating to where the feature is installed is also stored in a configuration database.
In accordance with further aspects of the invention, whether the patch is critical is included with the patch. Preferably, whether a patch is critical is determined on a feature basis.
In accordance with still further aspects of the invention, the application being patched is installed prior to applying the patch. Installing the application includes determining and storing an execution format. Preferably, the execution format is stored on a feature basis.